package com.aaie.gru.pay.controller;


import com.aaie.gru.pay.entity.GruSysPay;
import com.aaie.gru.pay.entity.GruSysPayDto;
import com.aaie.gru.pay.service.IGruSysPayService;
import com.aaie.gru.response.ResMessage;
import com.aaie.gru.util.CommonUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpSession;

/**
 * <p>
 *  前端控制器
 * </p>
 *
 * @author lvxing
 * @since 2019-08-09
 */
@Api(tags = "支付图片、银行卡号模块")
@RestController
@RequestMapping("/pay")
public class GruSysPayController {

    @Autowired
    IGruSysPayService gruSysPayService;

    @PostMapping("/getGruSysPayList")
    public String getGruSysPayList(@RequestBody GruSysPayDto param) {
        try {
            // 定义分页
            Page<GruSysPay> paramPage = new Page<>(param.getCurrent(), param.getSize());
            // 查询条件
            QueryWrapper<GruSysPay> queryWrapper = new QueryWrapper<>();
            // 按更新时间倒叙排序
            queryWrapper.orderByDesc("update_time_sort");
            IPage<GruSysPay> page = gruSysPayService.page(paramPage,queryWrapper);
            return ResMessage.ok(page.getRecords(), param.getCurrent(), param.getSize(), page.getTotal());
        } catch (BeansException e) {
            e.printStackTrace();
            return ResMessage.error("/pay/getGruSysPayList报错", 500);
        }

    }

    @PostMapping("/addGruSysPay")
    public String addGruSysPay(@RequestBody GruSysPay gruSysPay, HttpSession session) {
        try {
            if (StringUtils.isNotEmpty(gruSysPay.getPayId())) {
                return ResMessage.error("新增的数据不能有主键id", 200);
            }
            String updateTime = CommonUtil.generateLocalDateTime();
            long updateTimeSort = CommonUtil.generateCurrentTimeMillis();
            String username = CommonUtil.getUser(session).getUserName();
            gruSysPay.setCreateName(username);
            gruSysPay.setCreateTime(updateTime);
            gruSysPay.setCreateTimeSort(updateTimeSort);
            gruSysPay.setUpdateName(username);
            gruSysPay.setUpdateTime(updateTime);
            gruSysPay.setUpdateTimeSort(updateTimeSort);
            boolean save = gruSysPayService.save(gruSysPay);
            if (!save) {
                return ResMessage.error("数据插入失败", 200);
            }
            return ResMessage.ok(gruSysPay);
        } catch (Exception e) {
            e.printStackTrace();
            return ResMessage.error("/pay/addGruSysPay报错", 500);
        }
    }

    @ApiOperation(value = "更新支付图片和银行卡号", notes = "更新支付图片和银行卡号")
    @PostMapping("/editGruSysPay")
    public String editGruSysPay(@RequestBody GruSysPay gruSysPay, HttpSession session) {
        try {
            if (StringUtils.isEmpty(gruSysPay.getPayId())) {
                return ResMessage.error("更新的数据必须有主键id", 200);
            }
            // 创建人只能取用户账号，不取用户名称了，因为用户名称不是同一个字段，取起来太麻烦
            gruSysPay.setUpdateName(CommonUtil.getUser(session).getUserName());
            gruSysPay.setUpdateTime(CommonUtil.generateLocalDateTime());
            gruSysPay.setUpdateTimeSort(CommonUtil.generateCurrentTimeMillis());
            boolean b = gruSysPayService.updateById(gruSysPay);
            if (!b) {
                return ResMessage.error("数据更新失败", 200);
            }
            return ResMessage.ok(gruSysPay);
        } catch (Exception e) {
            e.printStackTrace();
            return ResMessage.error("/pay/editGruSysPay报错", 500);
        }

    }

    @ApiOperation(value = "按id获取支付图片和银行卡号", notes = "按id获取支付图片和银行卡号")
    @GetMapping("/getGruSysPay")
    public String getGruSysPay(String payId) {
        try {
            if (StringUtils.isEmpty(payId)) {
                return ResMessage.error("获取数据必须有主键id", 200);
            }
            GruSysPay gruSysPay = gruSysPayService.getById(payId);
            if (gruSysPay == null) {
                return ResMessage.error("获取失败", 200);
            }
            return ResMessage.ok(gruSysPay);
        } catch (Exception e) {
            e.printStackTrace();
            return ResMessage.error("/pay/getGruSysPay报错", 500);
        }

    }

    @PostMapping("/delGruSysPay")
    public String delGruSysPay(@RequestBody GruSysPay gruSysPay) {
        try {
            if (StringUtils.isEmpty(gruSysPay.getPayId())) {
                return ResMessage.error("删除数据必须有主键id", 200);
            }
            // 物理删除 删除主题的同时也删除主题对应的反馈内容
            boolean b = gruSysPayService.removeById(gruSysPay.getPayId());
            if (b) {
                return ResMessage.ok("删除数据成功");
            }
            return ResMessage.error("删除数据失败", 200);
        } catch (Exception e) {
            e.printStackTrace();
            return ResMessage.error("/pay/delGruSysPay报错", 500);
        }
    }
}
